package main

import "fmt"

/*
请定义一个队列并实现函数 max_value 得到队列里的最大值，要求函数max_value、push_back 和 pop_front 的均摊时间复杂度都是O(1)。

若队列为空，pop_front 和 max_value需要返回 -1
 */

type MaxQueue struct {
	queue []int
}


func Constructor() MaxQueue {
	return MaxQueue{
		queue: []int{},
	}
}

func (this *MaxQueue) Max_value() int {
	var n int
	n = this.queue[0]
	for _,v:=range this.queue{
		if n < v {
			n = v
		}
	}
	return n
}


func (this *MaxQueue) Push_back(value int)  {
	this.queue = append(this.queue,value)
}


func (this *MaxQueue) Pop_front() int {
	n:=this.queue[0]
	this.queue = this.queue[1:len(this.queue)]
	return n
}


func main() {
	ss:=Constructor()
	ss.Push_back(1)
	ss.Push_back(2)
	fmt.Println(ss.Max_value())
	fmt.Println(ss.Pop_front())
	fmt.Println(ss.Max_value())

}
